-- lua脚本
-- tonumber() 将值转为数字
local key = KEYS[1]   -- 当前要限流的接口存在redis里的key
local time = tonumber(ARGV[1])
local count = tonumber(ARGV[2])
-- redis.call('get', xxx) 调用redis里的get方法，参数为xxx
local current = redis.call('get', key)

-- current存在且这个current大于限流次数
if  current and tonumber(current) > count then
    return tonumber(current)
end

-- current 不存在或没超出限流次数，访问次数+1
current = redis.call('incr', key)   -- 此处不能用set，因为可能会存在并发操作，incr会更准确
-- 对该 current 设置过期时间
if tonumber(current) == 1 then  -- 防止有其他线程同时操作
    redis.call('expire', key, time)
end
return tonumber(current)
